0337d3699a42b5a6af99e1d23e29062b2d90f9bb,opennms-services/src/main/java/org/opennms/netmgt/poller/monitors/MultiIcmpMonitor.java,MultiIcmpMonitor,poll,#MonitoredService#Map#,97
Before Change
Category log = ThreadCategory.getInstance(this.getClass());
PollStatus serviceStatus = PollStatus.unavailable();
InetAddress host = (InetAddress) iface.getAddress();
Map<String, Number> rtt = null;
try {
Pinger pinger = new Pinger();
// get parameters
//
pinger.setRetries(ParameterMap.getKeyedInteger(parameters, "retry", pinger.getRetries()));
pinger.setTimeout(ParameterMap.getKeyedLong(parameters, "timeout", pinger.getTimeout()));
int count = ParameterMap.getKeyedInteger(parameters, "pings", DEFAULT_MULTI_PING_COUNT);
rtt = pinger.parallelPing(host, count);
} catch (IOException e) {
log.debug("failed to ping " + host, e);
}
if (rtt != null) {
serviceStatus = PollStatus.available();
serviceStatus.setProperties(rtt);
}
return serviceStatus;
After Change
* should be suppressed.
*
*/
public PollStatus poll(MonitoredService svc, Map parameters) {
NetworkInterface iface = svc.getNetInterface();
// Get interface address from NetworkInterface
//
if (iface.getType() != NetworkInterface.TYPE_IPV4)
throw new NetworkInterfaceNotSupportedException("Unsupported interface type, only TYPE_IPV4 currently supported");
Category log = ThreadCategory.getInstance(this.getClass());
PollStatus serviceStatus = PollStatus.unavailable();
InetAddress host = (InetAddress) iface.getAddress();
List<Number> responseTimes = null;
try {
Pinger pinger = new Pinger();
// get parameters
//
long timeout = ParameterMap.getKeyedLong(parameters, "timeout", Pinger.DEFAULT_TIMEOUT);
int count = ParameterMap.getKeyedInteger(parameters, "pings", DEFAULT_MULTI_PING_COUNT);
long pingInterval = ParameterMap.getKeyedLong(parameters, "interval", DEFAULT_PING_INTERVAL);
responseTimes = new ArrayList<Number>(pinger.parallelPing(host, count, timeout, pingInterval));
serviceStatus = PollStatus.available();
Collections.sort(responseTimes, new Comparator<Number>() {
public int compare(Number arg0, Number arg1) {
if (arg0 == null) {
return -1;
} else if (arg1 == null) {
return 1;
} else if (arg0.doubleValue() == arg1.doubleValue()) {
return 0;
} else {
return arg1.doubleValue() > arg0.doubleValue()? 1 : -1;
}
}
});
Map<String, Number> returnval = new LinkedHashMap<String,Number>();
for (int i = 0; i < responseTimes.size(); i++) {
returnval.put("ping" + (i+1), responseTimes.get(i));
}
returnval.put("loss", CollectionMath.countNull(responseTimes));
returnval.put("median", CollectionMath.median(responseTimes));
returnval.put("response-time", CollectionMath.average(responseTimes));
serviceStatus.setProperties(returnval);
} catch (Exception e) {
log.debug("failed to ping " + host, e);
}